<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<!-- 公共的 head 部分，可以定义部分 links,scripts,styles -->
<head th:fragment="head(htmlType)">
    <meta charset="UTF-8">
    <meta content="IE=edge" http-equiv="X-UA-Compatible">
    <meta content="width=device-width,initial-scale=1" name="viewport">
    <title th:text="${site.title}"></title>
    <meta content="telephone=no" name="format-detection">
    <meta content="var(--heo-card-bg)" name="theme-color">
    <link rel="shortcut icon"
          th:href="@{${#strings.isEmpty(site.favicon) ? assets_link + '/images/hao-logo.jpg' : site.favicon}}"/>
    <script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.min.js"></script>

    <script th:src="${assets_link + '/js/heo.js' + theme_version}"></script>

    <script th:src="${assets_link + '/js/halo.js' + theme_version}"></script>

    <link rel="stylesheet" th:href="${assets_link + '/zhheo/zhheoblog.css' + theme_version}">

    <link rel="stylesheet" th:href="${assets_link + '/zhheo/custom.css' + theme_version}">

    <link rel="stylesheet" th:href="${assets_link + '/libs/twikoo/commentBarrage.css' + theme_version}">

    <style th:if="${theme.config.other.scrollbarLinearGradientEnable}">
        *::-webkit-scrollbar-thumb {
            background-color: var(--heo-main);
            background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.4) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.4) 50%,rgba(255,255,255,.4) 75%,transparent 75%,transparent);
            border-radius: 2em
        }
    </style>

    <link media="print"
          onload='this.media="all"'
          rel="stylesheet"
          th:href="${assets_link + '/libs/iconfont/iconfont.css' + theme_version}">

    <!-- swiper 在瞬间滚动时会使用 -->
    <link rel="stylesheet" href="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/Swiper/8.0.6/swiper-bundle.min.css"/>

    <!-- 右下角通知 -->
    <link href="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/node-snackbar/0.1.16/snackbar.min.css"
          media="print"
          onload='this.media="all"'
          rel="stylesheet"
    />

    <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/6.2.0/css/all.min.css" media="all" onload="this.media='all'">

    <!-- 代码块自动识别语言 -->
    <th:block th:replace="~{modules/common/code :: code}"/>
    <!--  代码块-->
    <th:block th:replace="~{macro/prism-code :: prism-code}"/>

    <!-- 页脚内容-样式一 -->
    <th:block th:replace="~{modules/common/footer-style-one :: footer-style-one}"/>

    <script>
        (win => {
            win.saveToLocal = {
                set: function setWithExpiry(key, value, ttl) {
                    if (ttl === 0) return
                    const now = new Date()
                    const expiryDay = ttl * 86400000
                    const item = {
                        value: value,
                        expiry: now.getTime() + expiryDay,
                    }
                    localStorage.setItem(key, JSON.stringify(item))
                },

                get: function getWithExpiry(key) {
                    const itemStr = localStorage.getItem(key)

                    if (!itemStr) {
                        return undefined
                    }
                    const item = JSON.parse(itemStr)
                    const now = new Date()

                    if (now.getTime() > item.expiry) {
                        localStorage.removeItem(key)
                        return undefined
                    }
                    return item.value
                }
            }

            win.getScript = url => new Promise((resolve, reject) => {
                const script = document.createElement('script')
                script.src = url
                script.async = true
                script.onerror = reject
                script.onload = script.onreadystatechange = function () {
                    const loadState = this.readyState
                    if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
                    script.onload = script.onreadystatechange = null
                    resolve()
                }
                document.head.appendChild(script)
            })

            win.activateDarkMode = function () {
                document.documentElement.setAttribute('data-theme', 'dark')
                heo.initThemeColor()
            }
            win.activateLightMode = function () {
                document.documentElement.setAttribute('data-theme', 'light')
                heo.initThemeColor()
            }
            const t = saveToLocal.get('theme')

            const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
            const isLightMode = window.matchMedia('(prefers-color-scheme: light)').matches
            const isNotSpecified = window.matchMedia('(prefers-color-scheme: no-preference)').matches
            const hasNoSupport = !isDarkMode && !isLightMode && !isNotSpecified

            if (t === undefined) {
                if (isLightMode) activateLightMode()
                else if (isDarkMode) activateDarkMode()
                else if (isNotSpecified || hasNoSupport) {
                    const now = new Date()
                    const hour = now.getHours()
                    const isNight = hour <= 6 || hour >= 18
                    isNight ? activateDarkMode() : activateLightMode()
                }
                window.matchMedia('(prefers-color-scheme: dark)').addListener(function (e) {
                    if (saveToLocal.get('theme') === undefined) {
                        e.matches ? activateDarkMode() : activateLightMode()
                    }
                })
            } else if (t === 'light') activateLightMode()
            else activateDarkMode()

            if("[[${theme.config.style.colorScheme}]]" === 'dark')
                activateDarkMode()
            if("[[${theme.config.style.colorScheme}]]" === 'light')
                activateLightMode()

            const asideStatus = saveToLocal.get('aside-status')
            if (asideStatus !== undefined) {
                if (asideStatus === 'hide') {
                    document.documentElement.classList.add('hide-aside')
                } else {
                    document.documentElement.classList.remove('hide-aside')
                }
            }
        })(window)
    </script>

    <!-- 动态加载条 -->
    <script data-pace-options='{ "restartOnRequestAfter":false,"eventLag":false}'
            th:src="${assets_link + '/libs/pace/pace.min.js' + theme_version}"
            th:if="${theme.config.other.loadingBoxs.loadProgressBar}">
    </script>

    <!-- 复制 https://github.com/zenorocha/clipboard.js -->
    <script th:src="${assets_link + '/libs/clipboard/clipboard.min.js' + theme_version}"></script>

    <!-- 全局图片预览-->
    <script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/fancybox/3.5.7/jquery.fancybox.min.js"></script>
    <link rel="stylesheet" href="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/fancybox/3.5.7/jquery.fancybox.min.css">

    <!-- 关于地图-->
    <script src="https://map.qq.com/api/gljs?v=1.exp&key=YZOBZ-34HLF-K3OJV-JV6IN-OALJ5-7MBAC"></script>

    <!-- 关于统计-->
    <script th:src="${assets_link + '/libs/countup/countup.js' + theme_version}"></script>

    <!-- 小板报 -->
    <th:block th:if="${not #strings.isEmpty(theme.config.sidebar.welcome.key)}">
        <script defer th:if="${#strings.contains(theme.config.sidebar.widgetss.indexWidgets,'welcome') ||
            #strings.contains(theme.config.sidebar.widgetss.postWidgets,'welcome') ||
            #strings.contains(theme.config.sidebar.widgetss.tagWidgets,'welcome') ||
            #strings.contains(theme.config.sidebar.widgetss.categoryWidgets,'welcome')}"
                th:src="${assets_link + '/libs/welcome/welcome.js' + theme_version}"></script>
    </th:block>

    <!-- 文章ai摘要 -->
    <script data-pjax th:if="${theme.config.post.aiDescription.aiDescriptionEnable}"
            th:src="${assets_link + '/libs/gpt/post-ai.js'}"></script>

    <!-- icon图标 -->
    <link rel="stylesheet" th:href="'https://npm.onmicrosoft.cn/hao-theme-static@'+${theme.spec.version}+'/icon/iconfont.css'">

    <!-- 声明一些公共信息 -->
    <script id="site-config" th:inline="javascript">
        var GLOBAL_CONFIG = {
            // 页面类型 index,page,post,tag,category
            htmlType: [[${ htmlType }]],
            postTitle: [[${ htmlType == 'post' ? post.spec.title : htmlType == 'page' ? singlePage.spec.title : ''}]],
            isanchor: true,
            isPost: [[${htmlType == 'post'}]],
            isHome: [[${ htmlType == 'index'}]],
            isHighlightShrink: false,
            //isToc: [[${ htmlType == 'post'}]] && document.getElementById("card-toc"),
            postUpdate: '2022-11-04 20:08:15',
            copyright: undefined,
            lightbox: 'fancybox',
            lazyload: {enable: true, error: "/themes/theme-hao/assets/images/404s.gif"},
            isFriendLinksInFooter: [[${theme.config.footer.footer_group.enable_footer_group}]],
            loadingBox: [[${theme.config.other.loadingBoxs.loadingBoxEnable}]],
            loadProgressBar: [[${theme.config.other.loadingBoxs.loadProgressBar}]],
            allPlaylist: [[${theme.config.tool.nav_music.all_playlist}]],
            navMusicEnable:[[${theme.config.tool.nav_music.nav_musicEnable}]],
            isMusic: [[${ htmlType == 'music'}]],
            helloText: [[${#strings.listSplit(theme.config.sidebar.profile.helloText, ',')}]],
            assetsLink: [[${assets_link}]],
            profileStyle: [[${theme.config.sidebar.profile.profileStyle}]],
            rightMenuEnable: [[${theme.config.tool.rightMenu.rightMenuEnable}]],
            source: {
                links: {
                    linksUrl: [[${ theme.config.link.linksUrl }]],
                    linksData: [],
                    linksNum: [[${theme.config.footer.footer_group.num}]],
                },
                jQuery: 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.min.js',
                justifiedGallery: {
                    js: 'https://npm.elemecdn.com/flickr-justified-gallery@2.1.2/dist/fjGallery.min.js',
                    css: 'https://npm.elemecdn.com/flickr-justified-gallery@2.1.2/dist/fjGallery.css'
                },
                fancybox: {
                    js: 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/fancybox/3.5.7/jquery.fancybox.min.js',
                    css: 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/fancybox/3.5.7/jquery.fancybox.min.css'
                },
                twikoo:{
                    js: [[${assets_link}]]+'/libs/twikoo/twikoo.all.min.js' + [[${theme_version}]],
                    maxBarrage: [[${ theme.config.comments.twikoos.maxBarrage }]],
                    barrageTime: [[${ theme.config.comments.twikoos.barrageTime }]],
                    twikooUrl: "[(${theme.config.comments.twikoos.envId})]",
                    accessToken: "[(${theme.config.comments.twikoos.accessToken})]",
                    mailMd5: "[(${theme.config.comments.twikoos.mailMd5})]",
                },
                welcome:{
                    key:"[(${theme.config.sidebar.welcome.key})]",
                    locationLng: [[${theme.config.sidebar.welcome.locationLng}]],
                    locationLat: [[${theme.config.sidebar.welcome.locationLat}]],
                },
            },
            date_suffix: {
                just: '刚刚',
                min: '分钟前',
                hour: '小时前',
                day: '天前',
                month: '个月前'
            },
            Snackbar: {
                chs_to_cht: "你已切换为繁体",
                cht_to_chs: "你已切换为简体",
                day_to_night: "你已切换为深色模式",
                night_to_day: "你已切换为浅色模式",
                bgLight: "#49b1f5",
                bgDark: "#121212",
                position: "top-center",
            },
            prism: {
                enable: [[${ theme.config.code.enable }]],
                enable_title: [[${ theme.config.code.enable_title }]],
                enable_hr: [[${ theme.config.code.enable_hr }]],
                enable_line: [[${ theme.config.code.enable_line }]],
                enable_copy: [[${ theme.config.code.enable_copy }]],
                enable_expander: [[${ theme.config.code.enable_expander }]],
                prism_limit: Number([[${#strings.isEmpty(theme.config.code.height_limit) ? 300 : theme.config.code.height_limit}]])+30,
                enable_height_limit: [[${theme.config.code.enable_height_limit}]]
            },

        };

        // 根据htmlType设置页面title
        setTitle = () => {
            let title = ''

            switch ([[${ htmlType }]]) {
                case 'post':
                    if (GLOBAL_CONFIG.postTitle != '')
                        title = GLOBAL_CONFIG.postTitle
                    break;
                case 'page':
                    if (GLOBAL_CONFIG.postTitle != '')
                        title = GLOBAL_CONFIG.postTitle
                    break;
                case 'archive':
                    title = '归档'
                    break;
                case 'category':
                    title = '分类'
                    break;
                case 'links':
                    title = '友链'
                    break;
                case 'tag':
                    title = '标签'
                    break;
                case 'moments':
                    title = '瞬间'
                    break;
                case 'fcircle':
                    title = '友链鱼塘'
                    break;
                case 'about':
                    title = '关于'
                    break;
                case '404':
                    title = '页面没有找到'
                    break;
                case 'music':
                    title = '音乐馆'
                    break;
                case 'photos':
                    title = '图库'
                    break;
                case 'bangumis':
                    title = '追番'
                    break;
            }
            if (title != '')
                document.title = title + ' - ' + [[${ site.title }]]
        }

        (() => {
            setTitle()
        })()



    </script>


    <script data-pjax th:inline="javascript" th:if="${pluginFinder.available('PluginLinks')}">
        var groupData = [[${ linkFinder.groupBy() }]]
        if (groupData.length > 0) {
            GLOBAL_CONFIG.source.links.linksData = groupData.flatMap((item) => {
                return item.links
            })
        }
    </script>



</head>

</html>
